import string
import urllib.request
# 从parse库中导入quote类
from urllib.parse import quote
from bs4 import BeautifulSoup

def nospace(world):
    return world.strip().replace(" ","").replace("\n","")

city=input("请输入城市:")
code ={
    '北京': '530',
    '上海': '538',
    '广州': '763',
    '深圳': '765',
    '天津': '531',
    '武汉': '736',
    '西安': '854',
    '成都': '801',
    '沈阳': '599',
    '南京': '635',
    '杭州': '653',
    '苏州': '639',
    '重庆': '551',
    '长沙': '749',
    '厦门': '682',
    '南昌': '691'
}
city =code[city]
jobName =input("请输入相关岗位:")
url = "https://sou.zhaopin.com/?jl="+city+"&kw="+jobName+"&p=1"
# 如果url中包含中文，需要通过quote转义，不然会报错
# url中允许使用的字符有数字、字母、一些特殊符号
# -_.~！键盘上能够输入的符号
url=quote(url,safe=string.printable)
# print(url)
# 发送http请求
resp =urllib.request.urlopen(url)
# 获取页面内容read()方法用来获取响应内容是二进制格式
# 需要decode()转义成utf-8
content = resp.read().decode("utf-8")
# 通过BeautifulSoup对象去解析页面,同时要安装解析器,推荐lxml
soup =BeautifulSoup(content,"lxml")
# 接下来就似乎选择页面中存放咱们想要的数据的页面元素
# 通过标签的class属性的值来获取元素，返回的数据是列表类型
jobList =soup.select(".joblist-box _item")
# 创建一个list用来存放单个job相关的信息的字典
job_list =[]
for job in jobList:
# 创建一个字典用来存放单个招聘信息的内容
    job_dic ={}
# get _text()用来获取所有文本内容，以字符串列表的方式显示
# getText()获取所有文本内容，拼接成一个字符串进行显示
    # 岗位名称
    job_name =job.select(".jobinfo__name")[0].get_text()
    # 工资
    job_sal =job.select(".jobinfo__salary")[0].getText()
    # 取出工资数据包含的空格以及换行
    # strip()去除左右两边的空格,replace(α,b)用b替换α
    job_sal =nospace(job_sal)
    if '天' in job_sal:
        job_sal =int(job_sal.split("-")[0])*30
    elif ('千' in job_sal):
        job_sal =int(job_sal.split("千")[0])*1000
    elif ("万" in job_sal):
        job_sal =float(job_sal.split("万")[0])*10000
    else:
        job_sal =5000
# 公司名称
    company_name =nospace(job.select(".companyinfo__name")[0].get_text())
# 同时获取工作地点工作经验学历要求
    job_msg=job.select(".jobinfo _other-info-item")
# 工作地点
    job_place =nospace(job_msg[0].getText())
#   工作经验
    job_exp =nospace(job_msg[1].getText())
# 学历要求
    job_education =nospace(job_msg[2].getText())
# 最后将数据存入字典
    job_dic['job _name']=job_name
    job_dic['job _sal']=job_sal
    job_dic['company _name']=company_name
    job_dic['job _place']=job_place[0:2]
    job_dic['job _exp']=job_exp
    job_dic['job _education']=job_education
    job_list.append(job_dic)
for i in job_list:
    print(i)
